/**
 * 正则表达式使用示例
 */

// 1. 验证函数
export function validate(value: string, type: 'phone' | 'email' | 'idCard' | 'name') {
  const patterns = {
    // 手机号验证
    phone: /^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/,
    // 邮箱验证
    email: /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/,
    // 身份证验证
    idCard: /^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/,
    // 中文姓名验证
    name: /^[\u4e00-\u9fa5]{2,10}$/
  }
  
  return patterns[type].test(value)
}

// 2. 日期格式化
export function formatDate(dateStr: string): string {
  return dateStr
    .replace(/-/g, '/')         // 替换日期分隔符
    .replace(/\.[\d]{3}/g, '')  // 移除毫秒
    .replace(/T/, ' ')          // 替换T为空格
}

// 3. 数字格式化
export function formatNumber(num: number): string {
  // 添加千分位分隔符
  return num.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',')
}

// 4. 字符串分割
export function splitString(str: string): string[] {
  // 使用多个分隔符分割字符串
  return str.split(/[,，;；、\.\s]+/).filter(Boolean)
}

// 使用示例
function example() {
  // 验证手机号
  console.log(validate('13812345678', 'phone'))  // true
  console.log(validate('1381234567', 'phone'))   // false

  // 格式化日期
  console.log(formatDate('2023-12-01T12:30:45.000'))  // '2023/12/01 12:30:45'

  // 格式化数字
  console.log(formatNumber(1234567))  // '1,234,567'

  // 分割字符串
  console.log(splitString('苹果,香蕉，橙子；葡萄、西瓜。柠檬'))
  // ['苹果', '香蕉', '橙子', '葡萄', '西瓜', '柠檬']
}